<?php
// 本类由系统自动生成，仅供测试用途
class IndexAction extends CommonAction {
    private $cid;//分类主键
    private $lid;//地区主键
    private $url;//当前网址
    private $price;//价格
    private $order;//排序 
    public function __auto(){
        $server_url=$_SERVER['[SERVER_NAME'].$_SERVER['REQUEST_URI'];//当前页面网址
        if(strlen(U('Index/index','',''))>strlen($server_url)){//当前页面网址长度小于前台首页长度，当前地址显示首页
            $this->url=U('Index/index','','');
        }else{
            $this->url=$server_url;
        }
        $this->db=D('Goods');
        $this->cid=$this->_param('cid');
        $this->lid=$this->_param('lid');
        $this->price=$this->_param('price');
        $this->order=$this->_param('order');
        $this->setCategory();//分类信息
        $this->setLocality();//地区信息
        $this->setPrice();//价格设置
        $this->setOrderUrl();
        $this->setSearchWhere();
        $this->setOrder();
    }

    // 显示首页
    public function index(){
        $count=$this->db->getCount();
        // echo $count;
        import('ORG.Util.Page');//导入分页类
        $page= new Page($count,20);
        $show=$page->show();//分页显示输出
        $this->db->limit=$page->firstRow.','.$page->listRows;
        // $rows=$this->db->getGoods($this->cid,$this->lid,$page->firstRow,$page->listRows);//获得商品数据
        $rows=$this->db->getGoods();
        $goods=$this->disGoods($rows);//处理商品数据
        $this->assign('goods',$goods);//分配商品数据
        $this->assign('show',$show);//分配分页信息
		$this->display();
    }

    // 处理商品查询结果
    public  function disGoods($data){
        foreach ($data as $k=>$v) {
            $info=pathinfo($v['goods_img']);
            $data[$k]['goods_img']=$info['dirname'].'/'.$info['filename'].'_310x190'.'.'.$info['extension'];//组合适合的图片信息
            $data[$k]['sub_title']=mb_substr($v['sub_title'],0,30,'utf-8');//主标题过长截取30位
        }
        return $data;
    }
    // 设置排序规则
    private function setOrder(){
    	if(!is_null($this->order)){
    		$arr=explode('-',$this->order);
    		switch ($arr[0]) {
    			case 't':
    				$arr[0]='begin_time';
    				break;
    			case 's':
    				$arr[0]='buy';
    				break;
    			case 'p':
    				$arr[0]='price';
    				break;
    		}
            // 组合排序条件字符串
    		$order=$arr[0].' '.$arr[1];
            // 分配到模型中
    		$this->db->order=$order;
    	}
    }
    // 设置查询条件
    private function setSearchWhere(){
       if(!is_null($this->cid)){
        $soncids=D('Category')->getSoncids($this->cid);
        $this->db->cids=$soncids;
       }
       if(!is_null($this->lid)){
        $sonlids=D('Locality')->getSonlids($this->lid);
        $this->db->lids=$sonlids;
       }
       if(!is_null($this->price)){
        $arr=explode('-',$this->price);
        if(isset($arr[1])){
            $this->db->price='price>'.$arr[0].' and '.'price<='.$arr[1];
        }else{
            $this->db->price='price>'.$arr[0];
        }
       }
    }
    // 设置分类模板
    // 1,没有cid 显示顶级分类
    // 2,有cid 显示顶级分类和子级分类
    // 
    // 
    private function setCategory(){
        $url=url_param_remove('cid',$this->url);
        $db=D('Category');
        // 没有cid的时候,只显示第一级分类
        if(is_null($this->cid)){
            $topCategory=$db->getCategoryLevel(0);
            $tmpArr=array();
            $tmpArr[]="<a  class='active' href='".$url."'>全部</a>";
            foreach ($topCategory as $v) {
                $tmpArr[]="<a href=".$url."/cid/".$v['cid'].">".$v['cname']."</a>";
            }
            $this->assign('topCategory',$tmpArr);
            return;
        }
        // 有cid的时候,显示第一级分类
        $pid=$db->getCategoryPid($this->cid);
        $topCategory=$db->getCategoryLevel(0);
        $tmpArr=array();
        $tmpArr[]="<a href='".$url."'>全部</a>";
        foreach ($topCategory as $v) {
            if($this->cid==$v['cid']||$pid==$v['cid']){
                $tmpArr[]="<a class='active' href=".$url."/cid/".$v['cid'].">".$v['cname']."</a>";
            }else{
                $tmpArr[]="<a href=".$url."/cid/".$v['cid'].">".$v['cname']."</a>";
            }
        }
        $this->assign('topCategory',$tmpArr);
        // 如果cid是顶级分类,查找以当前cid做为pid的子类，不是顶级分类，先找到父类再找子类
        if($pid==0){
        	$sonCategory=$db->getCategoryLevel($this->cid);
        }else{
        	$sonCategory=$db->getCategoryLevel($pid);
        }
        if(is_null($sonCategory)) return; //没有子分类的时候不组合分类模版
        // 组合子分类模板
        $sonArr=array();
        if($pid==0){
        	
        	$sonArr[]="<a class='active' href='".$url."/cid/".$this->cid."'>全部</a>";
        }else{
        	$sonArr[]="<a href='".$url."/cid/".$pid."'>全部</a>";
        	
        }
       foreach ($sonCategory as $v) {
       	if($this->cid==$v['cid']){
       		$sonArr[]="<a class='active' href='".$url."/cid/".$v['cid']."'>".$v['cname']."</a>";	
       	}else{
       		$sonArr[]="<a href='".$url."/cid/".$v['cid']."'>".$v['cname']."</a>";
       	}
       }
       	$this->assign('sonCategory',$sonArr);
        $this->assign('pid',$pid);
    }

    // 设置地区模版
    private function setLocality(){
        $url=url_param_remove('lid',$this->url);
        $db=D('Locality');
        // 没有lid的时候
        if(is_null($this->lid)){
            $rows=$db->getLocalityLevel(0);
            $tmpArr=array();
            $tmpArr[]="<a class='active' href='".$url."'>全部</a>";
            foreach ($rows as $v) {
                $tmpArr[]="<a href='".$url."/lid/".$v['lid']."'>".$v['lname']."</a>";
            }
            $this->assign('topLocality',$tmpArr);
            return;
        }

        // 有lid的时候
        // 一种lid是顶级分类，一种不是顶级分类
        $rows=$db->getLocalityLevel(0);
        $tmpArr=array();
        $tmpArr[]="<a  href='".$url."'>全部</a>";
        $pid=$db->getLocalityPid($this->lid);
        foreach ($rows as $v) {
            if($this->lid==$v['lid']||$pid==$v['lid']){
                $tmpArr[]="<a class='active' href='".$url."/lid/".$v['lid']."'>".$v['lname']."</a>";
            }else{
                $tmpArr[]="<a href='".$url."/lid/".$v['lid']."'>".$v['lname']."</a>";

            }
        }
        $this->assign('topLocality',$tmpArr);
        if($pid==0){
            $sonRows=$db->getLocalityLevel($this->lid);
        }else{
            $sonRows=$db->getLocalityLevel($pid);
        }
        if(is_null($sonRows)) return;
        // 子分类存在，组合模版
        $sonArr=array();
        if($pid==0){
            $sonArr[]="<a class='active' href='".$url."/lid/".$this->lid."'>全部</a>";

        }else{
            $sonArr[]="<a href='".$url."/lid/".$pid."'>全部</a>";
        }
        foreach ($sonRows as $v) {
            if($this->lid==$v['lid']){
                $sonArr[]="<a class='active' href='".$url."/lid/".$v['lid']."'>".$v['lname']."</a>";
            }else{
                $sonArr[]="<a href='".$url."/lid/".$v['lid']."'>".$v['lname']."</a>";
            }
        }
        $this->assign('sonLocality',$sonArr);
    }

    // 设置价格模版
    private function setPrice(){
        $url=url_param_remove('price',$this->url);
        $db=D('Category');
        $tmpArr=array();
        if(is_null($this->cid)){
            $key='all';
        }else{
        	$pid=$db->getCategoryPid($this->cid);
            $key=$pid?$pid:$this->cid;
        }
        if(is_null($this->price)){
            $tmpArr[]="<a class='active' href='".$url."'>全部</a>";
        }else{

            $tmpArr[]="<a href='".$url."'>全部</a>";
        }
        
        $prices=C('price');
        // $arr=array();
        foreach ($prices[$key] as $k => $v) {

            if($this->price==$v[1]){
                $tmpArr[]="<a class='active' href='".$url."/price/".$v[1]."'>".$v[0]."</a>";
            }else{
                $tmpArr[]="<a href='".$url."/price/".$v[1]."'>".$v[0]."</a>";
            }

        }
     
        $this->assign('price',$tmpArr);
    }

    // 设置排序模版
    public function setOrderUrl(){
        $url=url_param_remove('order',$this->url);
        $arr=array();
        // 默认排序
        $arr['d']=$url.'/order/t-desc';
        // 销量降序
        $arr['s']=$url.'/order/s-desc';
        // 价格降序
        $arr['p-d']=$url.'/order/p-desc';
        // 价格升序
        $arr['p-a']=$url.'/order/p-asc';
        // 发布时间降序
        $arr['t']=$url.'/order/t-desc';
        // pre($arr);
        $this->assign('orderUrl',$arr);
    }
}